#Boa:Dialog:Dialog1

import wx

import consultasBD
import sincronizar_tabla
import clubManager
import utiles

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1ENTRREGARBTN, wxID_DIALOG1ESTADOLBL, 
 wxID_DIALOG1NUMEROTXT, wxID_DIALOG1PUNTOSLBL, wxID_DIALOG1SOLICITARBTN, 
 wxID_DIALOG1STATICTEXT1, wxID_DIALOG1STATICTEXT2, wxID_DIALOG1STATICTEXT3, 
] = [wx.NewId() for _init_ctrls in range(9)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt,tarjeta=""):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(458, 158), size=wx.Size(269, 174),
              style=wx.DEFAULT_DIALOG_STYLE, title='Sussan Club')
        self.SetClientSize(wx.Size(261, 147))

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Estado tarjeta', name='staticText1', parent=self,
              pos=wx.Point(32, 24), size=wx.Size(69, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Numero tarjeta', name='staticText2', parent=self,
              pos=wx.Point(32, 47), size=wx.Size(73, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Puntos acumulados', name='staticText3', parent=self,
              pos=wx.Point(32, 69), size=wx.Size(92, 13), style=0)

        self.estadoLbl = wx.StaticText(id=wxID_DIALOG1ESTADOLBL,
              label='staticText4', name='estadoLbl', parent=self,
              pos=wx.Point(144, 24), size=wx.Size(55, 13), style=0)

        self.puntosLbl = wx.StaticText(id=wxID_DIALOG1PUNTOSLBL,
              label='staticText6', name='puntosLbl', parent=self,
              pos=wx.Point(144, 69), size=wx.Size(55, 13), style=0)

        self.solicitarBtn = wx.Button(id=wxID_DIALOG1SOLICITARBTN,
              label='Confirmar Entrega', name='solicitarBtn', parent=self,
              pos=wx.Point(32, 97), size=wx.Size(104, 23), style=0)
        self.solicitarBtn.Bind(wx.EVT_BUTTON, self.OnSolicitarBtnButton,
              id=wxID_DIALOG1SOLICITARBTN)

        self.entrregarBtn = wx.Button(id=wxID_DIALOG1ENTRREGARBTN,
              label='Salir', name='entrregarBtn', parent=self, pos=wx.Point(200,
              97), size=wx.Size(48, 23), style=0)
        self.entrregarBtn.Bind(wx.EVT_BUTTON, self.OnEntrregarBtnButton,
              id=wxID_DIALOG1ENTRREGARBTN)

        self.numeroTxt = wx.TextCtrl(id=wxID_DIALOG1NUMEROTXT, name='numeroTxt',
              parent=self, pos=wx.Point(142, 43), size=wx.Size(58, 21), style=0,
              value='')
        self.numeroTxt.SetEditable(True)
        self.numeroTxt.SetMaxLength(5)

    def __init__(self, parent, idcliente,tarjeta=""):
        self.padre = parent
        self.idcliente = idcliente
        self.nrotarjeta = tarjeta
        self._init_ctrls(parent)
        self.refresh()
        
    def refresh(self):
        self.numeroTxt.SetValue(self.nrotarjeta)
        if self.nrotarjeta != "":
            puntos = self.buscarPuntos()
            self.solicitarBtn.Enable(False)
            self.estadoLbl.SetLabel("ENTREGADA")
            self.puntosLbl.SetLabel(str(puntos))
            self.numeroTxt.SetEditable(False)
            self.entrregarBtn.SetFocus()
        else:
            self.estadoLbl.SetLabel("A ENTREGAR")
            self.puntosLbl.SetLabel("5")
            self.numeroTxt.SetEditable(True)
            self.numeroTxt.SetFocus()

    def tarjetaAsignada(self):
        sql = "SELECT idclub FROM club_puntos WHERE idclub='"+self.numeroTxt.GetLabel()+"' "
        resultado = consultasBD.ordenCruda(sql)
        if resultado==() or resultado==None or len(resultado)==0:
            return False
        return True

    def buscarPuntos(self):
        sql = "SELECT SUM(puntos) FROM club_puntos WHERE idcliente='"+self.idcliente+"' "
        resultado = consultasBD.ordenCruda(sql)
        try:
            if len(resultado)!=0:
                return resultado[0][0]
        except:
            utiles.mensaje(self,"Ha ocurrido un error leyendo el puntaje")
            return -1
        return 0

    def OnSolicitarBtnButton(self, event):
        if self.numeroTxt.GetLabel()=="":
            utiles.mensaje(self,"Debe indicar un numero de tarjeta")
            self.numeroTxt.SetFocus()
            return
        if len(self.numeroTxt.GetLabel())!=5:
            utiles.mensaje(self,"Debe indicar un numero de tarjeta valido")
            self.numeroTxt.SetFocus()
            return
        try:
            numero = int(self.numeroTxt.GetLabel())
        except:
            utiles.mensaje(self,"Debe indicar un numero de tarjeta valido")
            self.numeroTxt.SetFocus()
            return
        if self.tarjetaAsignada():
            utiles.mensaje(self,"Esta tarjeta ya fue asignada")
            self.numeroTxt.SetFocus()
            return
        print "Tarjeta numero",self.numeroTxt.GetLabel()
        idclub = self.numeroTxt.GetLabel()
        idcliente = self.idcliente
        idcategoria = ""
        estado = "ENTREGADO"
        fechasolicitud = utiles.obtenerFecha("Y-m-d h:m:s")
        fechaentrega = utiles.obtenerFecha("Y-m-d h:m:s")
        sucursal = utiles.getSucursalActiva()
        nrofactura = "0"
        montocompra = "0"
        fecha = fechaentrega
        observacion = "nueva tarjeta: 5 puntos beneficio"
        #puntos
        try:
            consultasBD.begin()
            r1 = "INSERT INTO club ("
            r2 = "idclub,idcliente,idcategoria,"
            r3 = "estado,fechasolicitud,fechaentrega, "
            r4 = "sucursal) "
            r5 = "VALUES ("
            r6 = "'%s', '%s', '%s', " % (idclub, idcliente, idcategoria)
            r7 = "'%s', '%s', '%s', " % (estado, fechasolicitud, fechaentrega)
            r8 = "'%s')" % (sucursal)
            sql = r1+r2+r3+r4+r5+r6+r7+r8
            consultasBD.executaSinCommit(None, sql)
            r1 = "INSERT INTO club_puntos ("
            r2 = "idclub,idcliente,nrofactura,"
            r3 = "montocompra,fecha,puntos_nuevos, "
            r4 = "puntos_gastados,puntos,saldo,observacion) "
            r5 = "VALUES ("
            r6 = "'%s', '%s', '%s', " % (idclub, idcliente, nrofactura)
            r7 = "'%s', '%s', '%s', " % (montocompra, fechaentrega, "5")
            r8 = "'%s','%s','%s','%s')" % ("0","5","5",observacion)
            sql = r1+r2+r3+r4+r5+r6+r7+r8
            consultasBD.executaSinCommit(None, sql)
            sql = "UPDATE cliente SET tarjetasussan='"+idclub+"' WHERE idcliente='%s'" % (idcliente)
            resultado = consultasBD.executaSinCommit(None,sql)
            consultasBD.commit()
        except:
            mensaje(None,"No pudo guardarse la informacion.\nSalga y vuelta a intentarlo")
            self.Close()
            return
        try:
            sincronizar_tabla.syncServerTables(self, ["club", "club_puntos", "cliente"])        
        except:
            mensaje(None,"Fallo en sincronizacion\nHaga una sincronizacion manual")
        self.Close()
        return

    def OnEntrregarBtnButton(self, event):
        self.Close()

